namespace VRTK.Examples
|
|
{
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using VRTK.Controllables;
|
|
|
|
public class TogglePointerInteraction : MonoBehaviour
|
|
{
|
|
public enum OptionType
|
|
{
|
|
InteractWithObjects,
|
|
GrabToPointerTip
|
|
}
|
|
|
|
public OptionType optionType = OptionType.InteractWithObjects;
|
|
public VRTK_Pointer[] pointers = new VRTK_Pointer[0];
|
|
public VRTK_BaseControllable controllable;
|
|
public Text displayText;
|
|
public string maxText;
|
|
public string minText;
|
|
|
|
|
|
protected virtual void OnEnable()
|
|
{
|
|
controllable = (controllable == null ? GetComponent<VRTK_BaseControllable>() : controllable);
|
|
if (controllable != null)
|
|
{
|
|
controllable.MaxLimitReached += MaxLimitReached;
|
|
controllable.MinLimitReached += MinLimitReached;
|
|
}
|
|
}
|
|
|
|
protected virtual void OnDisable()
|
|
{
|
|
if (controllable != null)
|
|
{
|
|
controllable.MaxLimitReached -= MaxLimitReached;
|
|
controllable.MinLimitReached -= MinLimitReached;
|
|
}
|
|
}
|
|
|
|
protected virtual void MaxLimitReached(object sender, ControllableEventArgs e)
|
|
{
|
|
SetOption(true, maxText);
|
|
}
|
|
|
|
protected virtual void MinLimitReached(object sender, ControllableEventArgs e)
|
|
{
|
|
SetOption(false, minText);
|
|
}
|
|
|
|
protected virtual void SetOption(bool value, string text)
|
|
{
|
|
if (displayText != null)
|
|
{
|
|
displayText.text = text;
|
|
}
|
|
|
|
foreach (VRTK_Pointer pointer in pointers)
|
|
{
|
|
pointer.enabled = false;
|
|
pointer.pointerRenderer.enabled = false;
|
|
switch (optionType)
|
|
{
|
|
case OptionType.InteractWithObjects:
|
|
pointer.interactWithObjects = value;
|
|
break;
|
|
case OptionType.GrabToPointerTip:
|
|
pointer.grabToPointerTip = value;
|
|
break;
|
|
}
|
|
pointer.pointerRenderer.enabled = true;
|
|
pointer.enabled = true;
|
|
}
|
|
}
|
|
}
|
|
}
|